home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1191 / 1191.xpi / chrome / reminderfox.jar / content / reminderfox / network / upload.js < prev    next >
Text File  |  2010-01-31  |  9KB  |  251 lines

  1.  
  2. var reminderFox_upload_headless ;
  3. function reminderFox_upload_Startup()
  4. {
  5.     reminderFox_upload_headless = REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ALL_UI;
  6.       reminderFox_upload_statusTxt(reminderFox_getBundle().getString("rf.upload.ready.label"),0);
  7.       setTimeout(reminderFox_upload_senddata, 0);
  8. }
  9.  
  10. function reminderFox_upload_Startup_headless(headlessLevel)
  11. {
  12.       reminderFox_upload_headless = headlessLevel; 
  13.       reminderFox_upload_statusTxt(reminderFox_getBundle().getString("rf.upload.ready.label"),0);
  14.       setTimeout(reminderFox_upload_senddata, 0);
  15. }
  16.  
  17. function reminderFox_upload_closeWindow() {
  18.      if ( window.arguments != null && window.arguments[0] != null && window.arguments[0].closeOnNoErrors == 1) {
  19.           close();
  20.       }
  21.       else {
  22.           var reminderFox_upload_button= document.getElementById("reminderFox_upload_button");
  23.           reminderFox_upload_button.setAttribute("label",reminderFox_getBundle().getString("rf.net.done") );     
  24.       }
  25. }
  26. function reminderFox_upload_senddata()
  27. {
  28.   var _uploadURL = "";
  29.   var _ioService = Components.classes["@mozilla.org/network/io-service;1"]
  30.                       .getService(Components.interfaces.nsIIOService);
  31.  
  32.   var proto = reminderFox_prefs.getCharPref(REMINDER_FOX_PREF + "." + REMINDER_FOX_PROTO);
  33.   var address = reminderFox_prefs.getCharPref(REMINDER_FOX_PREF + "." + REMINDER_FOX_ADDRESS);
  34.   var _username = reminderFox_prefs.getCharPref(REMINDER_FOX_PREF + "." + REMINDER_FOX_USERNAME);
  35.   
  36.     if ( address == null || address.length == 0 ) {
  37.         reminderFox_uploadCallback(reminderFox_getBundle().getString("rf.net.done"),-1);
  38.         return;
  39.   }
  40.   
  41.   
  42.   var loginData = {
  43.     ljURL : proto + "://" + address,
  44.     username : _username,
  45.     password : ''
  46.   };
  47.  
  48.   loginData = reminderFox_getPassword(loginData);
  49.  
  50.   if (loginData == null || loginData.password == null) {
  51.       // no password found on password manager - user HAS TO set this password first!
  52.         reminderFox_uploadCallback(reminderFox_getBundle().getString("rf.upload.noPasswordSet.label"),3);
  53.         return;
  54.   }
  55.   
  56.   // uri-encode username and password
  57.   _username = encodeURIComponent( _username );
  58.   var _password = encodeURIComponent (loginData.password );
  59.      
  60.   _uploadURL = proto + "://" + _username + ":" + _password + "@" + address;
  61.  
  62.   reminderFox_upload_statusTxt(reminderFox_getBundle().getString("rf.upload.exporting.label"),0);
  63.   var i;
  64.  
  65.   
  66. //  // safety check: if there are no events and no todo's in the local file, we will assume that this an error condition 
  67. //  // (this happens frequently with icalx.com where the remote file gets cleared) and will not upload the local reminders
  68. //  var hasTodos = false;               
  69. //  for ( var n in reminderFoxTodosArrayArg ) {
  70. //        var reminderFoxTodos = reminderTodos[n];
  71. //        if (reminderFoxTodos.length > 0  ) {
  72. //            hasTodos = true;
  73. //            break;
  74. //        }          
  75. //  }
  76. //  if ( reminderFoxEvents.length == 0 || !hasTodos ) {
  77. //          reminderFox_logMessageLevel( 
  78. //                          "Failed: local file has no events or todo's...", REMINDER_FOX_LOG_LEVEL_FINE);          
  79. //         return;
  80. //      }
  81.  
  82.  
  83.   var reminderFoxEvents = reminderFox_getReminderEvents();
  84.   var reminderFoxTodosArrayArg = reminderFox_getReminderTodos();  // iterate over all reminders
  85.   var str=reminderFox_constructReminderOutput(reminderFoxEvents, reminderFoxTodosArrayArg, true);;
  86.   
  87.     
  88.   // now clear the reminders so the Add Reminder doesn't use them (because they would have escaped commas)
  89.   reminderFox_clearRemindersAndTodos();
  90.  
  91.   var uploadURI = _ioService.newURI(_uploadURL,null,null);
  92.   var mimetype = "txt/xml; charset=UTF-8"; 
  93.   if(!str)
  94.   {
  95.     reminderFox_uploadCallback(reminderFox_getBundle().getString("rf.net.done"),-3);
  96.     return;
  97.   }else if( ! gUploadService.start(str,
  98.                                     uploadURI,
  99.                                     mimetype,reminderFox_uploadCallback)) {
  100.  
  101.     reminderFox_uploadCallback(reminderFox_getBundle().getString("rf.net.done"),-1);
  102.   }
  103. }
  104.  
  105. function reminderFox_uploadCallback(aStatus,aError) {
  106.    reminderFox_logMessageLevel(new Date() + ": Uploaded reminders...", REMINDER_FOX_LOG_LEVEL_FINE);
  107.  
  108.   if(aStatus != reminderFox_getBundle().getString("rf.net.done") && aError==0) {
  109.     reminderFox_upload_statusTxt(aStatus,aError);
  110.     return;
  111.    }
  112.   switch(aError){
  113.     case -2:
  114.       reminderFox_upload_statusTxt(aStatus,aError);
  115.         if ( reminderFox_upload_headless == REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ERRORS) {
  116.             var status =   (aError)?reminderFox_upload_getErrorMsg(aError):aStatus;
  117.             alert( reminderFox_getBundle().getString("rf.add.network.status.msg.error") + ": " + status );
  118.           }         
  119.       break;
  120.     case 0:
  121.            if ( !(window.arguments != null && window.arguments[0] != null && window.arguments[0].closeOnNoErrors == 1)) {
  122.                reminderFox_upload_statusTxt(aStatus,aError);
  123.           }        
  124.       break;
  125.     case -3:
  126.       reminderFox_upload_statusTxt(reminderFox_getBundle().getString("rf.upload.sourceFileNotFound.label"),0);
  127.         if ( reminderFox_upload_headless == REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ERRORS) {
  128.             var status =   (aError)?reminderFox_upload_getErrorMsg(aError):aStatus;
  129.             alert( reminderFox_getBundle().getString("rf.add.network.status.msg.error") + ": " + status );
  130.           }         
  131.       break;
  132.     case 201:
  133.       reminderFox_upload_statusTxt(reminderFox_getBundle().getString("rf.upload.created.label"),0);
  134.         if ( reminderFox_upload_headless == REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ERRORS) {
  135.             var status =   (aError)?reminderFox_upload_getErrorMsg(aError):aStatus;
  136.             // 201 means that the file was created successfully - we don't need to show this message - icalexchange, for 
  137.             // instance, returns this code every time you write the file (I guess because it recreates it each time)
  138.             //alert( "ReminderFox: " + status );
  139.           }         
  140.       break;
  141.     default:
  142.           reminderFox_upload_statusTxt(aStatus,aError);
  143.         if (reminderFox_upload_headless == REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ERRORS) {
  144.             var status = null;
  145.             if (aError == -1) {
  146.                 status = aStatus;
  147.             }
  148.             else {
  149.                 (aError) ? reminderFox_upload_getErrorMsg(aError) : aStatus;
  150.             }
  151.             alert( reminderFox_getBundle().getString("rf.add.network.status.msg.error") + ": " + status );
  152.           }      
  153.       return;
  154.       break;
  155.   }
  156.  
  157. //    if ( aError == 0 ) { 
  158.       if ( reminderFox_upload_headless == REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ALL_UI) {
  159.           reminderFox_upload_closeWindow();
  160.         }
  161.  
  162. //  }
  163.  
  164.  
  165. }
  166.  
  167. function reminderFox_upload_statusTxt(aStatus,aError)
  168. {
  169.             if (reminderFox_upload_headless == REMINDER_FOX_UI_MODE_HEADLESS_SHOW_ALL_UI ) {
  170.                document.getElementById("status").value =(aError)?reminderFox_upload_getErrorMsg(aError):aStatus;
  171.           }
  172.           else {
  173.               var value = (aError)?    reminderFox_upload_getErrorMsg(aError):aStatus;
  174.             reminderFox_logMessageLevel("Upload (headless): " + new Date() + " " + value, REMINDER_FOX_LOG_LEVEL_FINE);
  175.           }    
  176. }
  177.  
  178. function reminderFox_cancelUpload()
  179. {
  180.   gUploadService.cancel();
  181.     close();
  182. }
  183.  
  184.  
  185. function reminderFox_upload_getErrorMsg(aStatus)
  186. {
  187.   if(aStatus==0)
  188.     return reminderFox_getBundle().getString("rf.ok");;
  189.  
  190.   var status=aStatus % 0x804b0000;
  191.   var error=reminderFox_getBundle().getString("rf.upload.unexpected.label");
  192.   switch(status)
  193.   {
  194.     case 1:
  195.       error=reminderFox_getBundle().getString("rf.upload.unexpected.label");
  196.       break;
  197.     case 2:
  198.       error=reminderFox_getBundle().getString("rf.upload.usercancel.label");
  199.       break;
  200.     case 3:
  201.       error=reminderFox_getBundle().getString("rf.upload.noPasswordSet.label");
  202.       break;      
  203.     case 13:
  204.       error=reminderFox_getBundle().getString("rf.upload.refused.label");
  205.       break;
  206.     case 14:
  207.       error=reminderFox_getBundle().getString("rf.upload.netTimeout.label");
  208.       break;
  209.     case 16:
  210.       error=reminderFox_getBundle().getString("rf.upload.netOffline.label");
  211.       break;
  212.     case 21:
  213.       error=reminderFox_getBundle().getString("rf.upload.loginfailure.label");
  214.       break;
  215.     case 22:
  216.       error=reminderFox_getBundle().getString("rf.upload.ftpcwd.label");
  217.       break;
  218.     case 23:
  219.       error=reminderFox_getBundle().getString("rf.upload.ftppasv.label");
  220.       break;
  221.     case 24:
  222.       error=reminderFox_getBundle().getString("rf.upload.ftppwd.label");
  223.       break;
  224.     case 25:
  225.       error=reminderFox_getBundle().getString("rf.upload.ftplist.label");
  226.       break;
  227.     case 30:
  228.       error=reminderFox_getBundle().getString("rf.upload.unknown.label");
  229.       break;
  230.     case 201:
  231.       reminderFox_upload_statusTxt(reminderFox_getBundle().getString("rf.upload.created.label"),0);
  232.       break;
  233.     case 401:
  234.       error=reminderFox_getBundle().getString("rf.upload.loginfailure.label");
  235.       break;
  236.     case 405:
  237.       error=reminderFox_getBundle().getString("rf.upload.methodNotAllowed.label");
  238.       break;
  239.     case 409:
  240.       error=reminderFox_getBundle().getString("rf.upload.DestFileNotDefined.label");
  241.       break;
  242.     default:
  243.       error=reminderFox_getBundle().getString("rf.upload.unexpected.label");
  244.       break;
  245.   }
  246.  
  247.   var formatted= (aStatus<0x804b0000)?
  248.           aStatus.toString(10) : "0x" + aStatus.toString(16).toUpperCase();
  249.   return  error + " (" + formatted + ")\n";
  250. }
  251.